home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 June
/
EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso
/
earcd
/
arexx
/
trxtlsr3.lha
/
ExchangeGUI
/
Exchange.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
1996-04-22
|
21KB
|
669 lines
/*
$VER: Exchange.rexx V1.5 (10.2.96) Copyright by Nils Görs
This ARexx script was written using the tritonrexx.library and
rexxtricks.library from Jürgen Kohrmeyer <j_kohrmeyer@wilam.north.de>.
This Script needs HandleCX from Martin Berndt.
required libraries: tritonrexx.library
rexxtricks.library
Schreibfehler bemerkt von: rick@emma.panam.wimsey.com (Rick Younie)
*/
/* temporary Filename */
Tmp.Out = "t:HandleCX.out"
/* Name and path from Martin Berndt's 'HandleCX' */
HandleCX = "HandleCX"
/* Path from the configfiles */
Directory = "REXX:"
ListPattern = "#?.EXCList"
/************************************************
* Please don't change anything under this line *
************************************************/
PARSE ARG PubScreen
IF PubScreen == "?" THEN DO
OPTIONS PROMPT "PUBSCREEN/K: "
PARSE PULL PubScreen
END
CALL _InitAll
call _CreateList
/*
** Beschreibung der Applikation
*/
appname = 'Exchange'
applongname = 'Exchange - ©1995/96 by Nils Görs'
appinfo = 'Tool for Commodity controlling'
appversion = '1.5'
apprelease = '5'
appdate = '10.2.96'
Activation.0 = 2
Activation.1 = localestring(MSG_CYCLE_ACTIVE)
Activation.2 = localestring(MSG_CYCLE_INACTIVE)
Activation2.0 = 2
Activation2.1 = localestring(MSG_CYCLE_ACTIVEALL)
Activation2.2 = localestring(MSG_CYCLE_DEACTIVEALL)
IF active.1 == "INACTIVE" THEN N1 = 1
_maintags:
windowtags = WindowID(1),
PubScreenName(PubScreen),
WindowTitle(appname appversion),
BeginMenu(localestring(MSG_MAIN_MENU_PROJECT)),
MenuItem(localestring(MSG_MAIN_MENUITEM_ABOUT),10),
MenuItem(localestring(MSG_MAIN_MENUITEM_ABOUT2),11) ItemBarlabel,
MenuItem(localestring(MSG_MAIN_MENUITEM_UPDATE),12),
MenuItem(localestring(MSG_MAIN_MENUITEM_CHANGE),14),
MenuItem(localestring(MSG_MAIN_MENUITEM_ICONIFY),16) ItemBarlabel,
MenuItem(localestring(MSG_MAIN_MENUITEM_FILEREM),15) ItemBarlabel,
MenuItem(localestring(MSG_MAIN_MENUITEM_QUIT),13),
'HorizGroupA Space VertGroupA Space',
NamedSeparatorIN(localestring(MSG_MAIN_TEXT_AVAILABLE),1),
'Space',
ListSS('Tools',1,0,0),
'EndGroup',
'VertGroupA SpaceB SpaceB',
GetEntryButton(12),
GetFileButton(15) 'SpaceB SpaceB SpaceB SpaceB SpaceB SpaceB SpaceB SpaceB',
'EndGroup',
'SpaceS',
'VertGroupA Space',
NamedSeparator(localestring(MSG_MAIN_TEXT_INFORMATIONS)),
'Space',
'TROB_FrameBox TRFB_Text',
'VertGroupA',
'SpaceS',
ClippedTextID(Information.1,2),
ClippedTextID(Information2.1,22),
'Space EndGroup',
'SpaceB',
'BeginLine',
Button(localestring(MSG_MAIN_GADGET_SHOWWINDOW),3),
'SpaceS',
Button(localestring(MSG_MAIN_GADGET_HIDEWINDOW),4),
'EndLine',
'SpaceS',
'BeginLine',
CycleGadget(activation,n1,5),
'SpaceS',
Button(localestring(MSG_MAIN_GADGET_REMOVE),6),
'EndLine',
'SpaceS',
'BeginLine',
CycleGadget(activation2,0,7),
'SpaceS',
Button(localestring(MSG_MAIN_GADGET_REMOVEALL),8),
'EndLine',
'Space EndGroup Space EndGroup EndProject'
/*
** Unterbrechungssignale
*/
SIGNAL ON break_c
SIGNAL ON failure
SIGNAL ON halt
SIGNAL ON ioerr
SIGNAL ON syntax
app = TR_CREATEAPP('TRCA_Name' '"'appname'"',
'TRCA_LongName' '"'applongname'"',
'TRCA_Info' '"'appinfo'"',
'TRCA_Version' '"'appversion'"',
'TRCA_Release' '"'apprelease'"',
'TRCA_Date' '"'appdate'"',
'TAG_END')
IF app ~= '00000000'x THEN DO
window = TR_OPENPROJECT(app,windowtags)
WindowProject=C2D(window) /* zum Locken des Fensters bei About */
IF window ~= '00000000'x THEN DO
ende = 0
IF GUI.1 == "NOGUI" THEN DO
CALL TR_SETATTRIBUTE(window,3,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,4,'TRAT_Disabled',1)
END
DO WHILE ende ~= 1
CALL TR_WAIT(app,'')
/* 1 = ListView
3 = ShowWindow
4 = HideWindow
5 = Cycle 1
6 = Remove
7 = Cycle 2
8 = Remove all
10 = About
11 = About Triton
12 = Update
13 = Quit
14 = Update Screen
15 = GetFile
*/
DO WHILE TR_HANDLEMSG(app,'event')
IF event.trm_class = 'TRMS_KEYPRESSED' THEN DO
IF event.trm_code == 32 THEN CALL _InActivate
IF event.trm_code == 23 THEN DO
nummer = TR_GETATTRIBUTE(window,7,'TRAT_Value')
IF Nummer == 0 THEN
CALL TR_SETATTRIBUTE(window,7,'TRAT_Value',1)
ELSE
CALL TR_SETATTRIBUTE(window,7,'TRAT_Value',0)
CALL _InActivateALL
END
END
IF event.trm_class = 'TRMS_ACTION' THEN DO
nummer = TR_GETATTRIBUTE(window,1,'TRAT_Value')+1
SELECT
WHEN event.trm_id = 3 THEN
ADDRESS COMMAND HandleCX '"'tools.nummer'"' 'POPUP'
WHEN event.trm_id = 4 THEN
ADDRESS COMMAND HandleCX '"'tools.nummer'"' 'HIDE'
WHEN event.trm_id = 6 THEN DO
ADDRESS COMMAND HandleCX '"'tools.nummer'"' 'REMOVE'
CALL _CreateList
CALL TR_SETATTRIBUTE(window,1,'TROB_Listview',Tools)
nummer = TR_GETATTRIBUTE(window,1,'TRAT_Value')+1
CALL TR_SETATTRIBUTE(window,2,'TRAT_Text',Information.nummer)
CALL TR_SETATTRIBUTE(window,22,'TRAT_Text',Information2.nummer)
call _CheckGUI
call _CheckActive
END
WHEN event.trm_id = 8 THEN DO
DO i = 1 to tools.0
ADDRESS COMMAND HandleCX '"'Tools.i'"' 'REMOVE'
END
CALL _CreateList
CALL TR_SETATTRIBUTE(window,1,'TROB_Listview',Tools)
CALL _CheckGUI
CALL _CheckActive
END
WHEN event.trm_id = 10 THEN DO
CALL TR_EasyRequest(app,"Exchange.rexx V"appversion "("appdate")",
NL NL"(c) 1995/1996 Nils Görs <N.Goers@Art-Line.Art-Line.de>",
NL"- freely distributable -","OK", "TREZ_Title" localestring(MSG_TITLE_ABOUT) "TREZ_LockProject" WindowProject)
END
WHEN event.trm_id = 11 THEN DO
CALL TR_EasyRequest(app,"This application uses the Triton GUI creation system",
NL"Triton is (C) by Stefan Zeiger <s.zeiger@laren.rhein-main.de>",
NL NL"This application was written using the tritonrexx.library",
NL"tritonrexx.library is (C) by Jürgen Kohrmeyer <j_kohrmeyer@wilam.north.de>",,
"OK","TREZ_Title" '"'localestring(MSG_MAIN_MENUITEM_ABOUT2)'"' "TREZ_LockProject" WindowProject)
END
WHEN event.trm_id = 12 THEN DO
CALL _UpdateToolListe
END
WHEN event.trm_id = 16 THEN DO
CALL _Iconify
END
WHEN event.trm_id = 15 THEN DO
bool = ASL_RequestFile(window,filelistname,,
"ASLFR_PubScreenName" PubScreen,
"ASLFR_InitialDrawer" Directory,
"ASLFR_InitialPattern" ListPattern,
"ASLFR_TitleText" '"'localestring(MSG_REQUESTER_REMOVELIST)'"')
IF bool = 1 THEN DO
CALL READFILE(filelistname.1,remlist)
Auswahl=TR_EasyRequest(app,localestring(MSG_REQUEST_AREYOUSURE) NL filelistname.1 "?",,
localestring(MSG_REQUEST_YESSHOWNO),"TREZ_LockProject" WindowProject)
IF Auswahl = 1 THEN CALL _removefromFileList
IF Auswahl = 2 THEN CALL _removeFileList
END
END
WHEN event.trm_id = 14 THEN CALL _NewPubScreen
WHEN event.trm_id = 13 THEN DO
Quit=TR_EasyRequest(app,localestring(MSG_REQUEST_REALLYQUIT),,
localestring(MSG_REQUEST_YESNO),"TREZ_Title Quit TREZ_LockProject" WindowProject)
IF Quit == 1 THEN DO
CALL TR_CLOSEPROJECT(window)
CALL TR_DELETEAPP(app)
EXIT(0)
END
END
OTHERWISE
NOP
END
END
IF event.trm_class = 'TRMS_NEWVALUE' THEN DO
/* Beim Doppelklick wird ShowWindow gestartet */
IF BITAND(D2X(event.trm_qualifier),'0200'x) = '0200'x THEN
ADDRESS COMMAND HandleCX '"'tools.nummer'"' 'POPUP'
SELECT
WHEN event.trm_id = 1 THEN DO
nummer = event.trm_data+1
CALL TR_SETATTRIBUTE(window,2,'TRAT_Text',Information.nummer)
CALL TR_SETATTRIBUTE(window,22,'TRAT_Text',Information2.nummer)
call _CheckGUI
call _CheckActive
END
WHEN event.trm_id = 5 THEN CALL _InActivate
WHEN event.trm_id = 7 THEN CALL _InActivateALL
OTHERWISE
NOP
END
END
IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN DO
IF event.trm_project = window THEN ende = 1
IF event.trm_project = dummywindow THEN
CALL _uniconify
END
END
END
CALL TR_CLOSEPROJECT(window)
END
CALL TR_DELETEAPP(app)
END
EXIT(0)
/* Routine, die das GUI auf einem neuen PubScreen öffnen läßt */
_NewPubScreen:
IF PUBSCREENLIST('ScreenList') == 0 THEN RETURN
delstart=LSEARCH(PubScreen,Screenlist)
IF delstart ~= -1 THEN RXTR_STEMREMOVE(ScreenList,delstart)
ScreenListTags = WindowID(2),
WindowPosition('TRWP_MOUSEPOINTER'),
WindowTitle(localestring(MSG_TITLE_CHANGEPUBSCREEN)),
WindowFlags('TRWF_NOCLOSEGADGET|TRWF_NOESCCLOSE'),
PubScreenName(Pubscreen),
'VertGroupA',
'Space',
'HorizGroupA',
'Space',
ListSel('screenlist',301,0),
'Space',
'EndGroup',
'Space',
'HorizSeparator',
'Space',
'HorizGroupA',
'Space',
ButtonRE(localestring(MSG_CANCEL),302),
'Space',
'EndGroup Space EndGroup EndGroup EndProject'
PubScreenProject = TR_OPENPROJECT(app,Screenlisttags)
IF PubScreenProject ~= '00000000'x THEN DO
CALL TR_LOCKPROJECT(window)
DO WHILE ende ~= 1
DO WHILE TR_HANDLEMSG(app,'event2')
IF event2.trm_class = 'TRMS_ACTION' THEN ende = 1 /* Cancel Gadget */
IF event2.trm_class = 'TRMS_NEWVALUE' THEN DO
nummer = TR_GETATTRIBUTE(PubScreenProject,301,'TRAT_Value')+1
IF PubScreen ~= Screenlist.nummer THEN DO
PubScreen = ScreenList.nummer
CALL TR_UNLOCKPROJECT(window)
CALL TR_CLOSEPROJECT(PubScreenProject)
CALL TR_CLOSEPROJECT(window)
CALL TR_DELETEAPP(app)
CALL _maintags
END
ELSE ende = 1
END
END
END
ende = 0
CALL TR_UNLOCKPROJECT(window)
CALL TR_CLOSEPROJECT(PubScreenProject)
END
RETURN
/* Routine, um die Commodities aus der Fileliste zu entfernen */
_RemoveFileList:
RemoveListTags = WindowID(2),
WindowPosition('TRWP_MOUSEPOINTER'),
WindowTitle(localestring(MSG_TITLE_REMOVETHIS)),
WindowFlags('TRWF_NOCLOSEGADGET|TRWF_NOESCCLOSE'),
PubScreenName(Pubscreen),
'VertGroupA',
'Space',
'HorizGroupA',
'Space',
ListRO('remlist',301,0),
'Space',
'EndGroup',
'Space',
'HorizSeparator',
'Space',
'HorizGroupA',
'Space',
ButtonR(localestring(MSG_GADGET_REMOVE),302),
ButtonE(localestring(MSG_CANCEL),303),
'Space',
'EndGroup Space EndGroup EndGroup EndProject'
PubScreenProject = TR_OPENPROJECT(app,Removelisttags)
IF PubScreenProject ~= '00000000'x THEN DO
CALL TR_LOCKPROJECT(window)
DO WHILE ende ~= 1
DO WHILE TR_HANDLEMSG(app,'event2')
IF event2.trm_id = 302 THEN DO
CALL _removefromFileList
ende = 1
END
IF event2.trm_id = 303 THEN ende = 1
END
END
CALL TR_UNLOCKPROJECT(window)
CALL TR_CLOSEPROJECT(PubScreenProject)
END
ende = 0
RETURN
_removefromFileList:
DO i = 1 to remlist.0
ADDRESS COMMAND HandleCX '"'remlist.i'"' 'REMOVE'
END
CALL _UpdateToolListe
RETURN
/* hier wird die List der Commodities upgedatet! */
_UpdateToolListe:
CALL _CreateList
CALL _CheckGUI
CALL _CheckActive
CALL TR_SETATTRIBUTE(window,1,'TROB_Listview',Tools)
CALL TR_SETATTRIBUTE(window,1,'TRAT_Value',Nummer-1)
CALL TR_SETATTRIBUTE(window,2,'TRAT_Text',Information.nummer)
CALL TR_SETATTRIBUTE(window,22,'TRAT_Text',Information2.nummer)
RETURN
/* Es folgen nun die ganzen Unterroutinen, die die Listen erzeugen,
die GUI überprüfen, Texte updaten etc. etc. */
_CreateList:
ADDRESS COMMAND HandleCX "v >"Tmp.out
IF READFILE(Tmp.Out,Infile) == 0 THEN EXIT(5)
Tools.0 = Infile.0/2
Information.0 = Tools.0
Information2.0 = Tools.0
Active.0 = Tools.0
GUI.0 = Tools.0
j = 1
DO i = 1 TO Infile.0
/* hier wird alles in die richtigen Listen verteilt,
Toolname, Active, Gui, Information */
Tools.j=DELWORD(Infile.i,1,1)
WordNo=WORDS(Tools.j)
GUI.j = SUBWORD(Tools.j,WordNo)
Active.j = SUBWORD(Tools.j,WordNo-1,1)
Tools.j = SUBWORD(Tools.j,1,WordNo-2)
/* und hier wird die Information zu dem Commodity verarbeitet */
i = i+1
Information.j=DELWORD(Infile.i,1,1)
MaxLenght=LENGTH(Information.j)
IF INDEX(Information.j,") ") ~= 0 THEN DO
/* (xx.xx.xx) (xxxxx) */
Position=LASTPOS(" (",Information.j)
First=LEFT(Information.j,Position)
second=RIGHT(Information.j,Maxlenght-Position-1)
second=LEFT(second,Maxlenght-Position-2)
END
ELSE DO
/* (xxxxx) */
Position=INDEX(Information.j," (")
First=LEFT(Information.j,Position)
second=RIGHT(Information.j,Maxlenght-Position-1)
second=LEFT(second,Maxlenght-Position-2)
END
Information.j = First
Information2.j = second
j=j+1
END
ADDRESS COMMAND "c:delete" Tmp.Out "QUIET"
RETURN
/* wie sollen die Gadget in der GUI denn nun dargestellt werden ? */
_CheckGUI:
IF gui.nummer == "NOGUI" THEN DO
CALL TR_SETATTRIBUTE(window,3,'TRAT_Disabled',1)
CALL TR_SETATTRIBUTE(window,4,'TRAT_Disabled',1)
END
ELSE DO
CALL TR_SETATTRIBUTE(window,3,'TRAT_Disabled',0)
CALL TR_SETATTRIBUTE(window,4,'TRAT_Disabled',0)
END
RETURN
_CheckActive:
IF active.nummer == "INACTIVE" THEN
CALL TR_SETATTRIBUTE(window,5,'TRAT_Value',1)
ELSE
CALL TR_SETATTRIBUTE(window,5,'TRAT_Value',0)
RETURN
_InActivate:
nummer = TR_GETATTRIBUTE(window,1,'TRAT_Value')+1
ADDRESS COMMAND HandleCX '"'Tools.Nummer'"' 'TOGGLE'
CALL _CreateList
CALL TR_SETATTRIBUTE(window,1,'TROB_Listview',Tools)
CALL _CheckGUI
CALL _CheckActive
RETURN
_InActivateALL:
nummer = TR_GETATTRIBUTE(window,7,'TRAT_Value')
IF nummer == 1 THEN Action = 'Disable'
ELSE Action = 'Enable'
DO i = 1 to tools.0
ADDRESS COMMAND HandleCX '"'tools.i'"' Action
END
CALL _CreateList
CALL TR_SETATTRIBUTE(window,1,'TROB_Listview',Tools)
CALL _CheckGUI
CALL _CheckActive
RETURN
_Iconify:
iwinsize.trd_left=10
iwinsize.trd_top=10
iwinsize.trd_width=20
iwinsize.trd_height=10
iwinsize.trd_left2=10
iwinsize.trd_top2=10
iwinsize.trd_width2=10
iwinsize.trd_height2=20
iwinsize.trd_zoomed=30
SleepWin = WindowID(1000),
PubScreenName(PubScreen),
WindowTitle(appname appversion),
WindowDimensions(iwinsize),
BeginMenu(localestring(MSG_MAIN_MENU_PROJECT)),
MenuItem(localestring(MSG_MAIN_MENUITEM_QUIT),13),
'EndProject'
ok=tr_closeproject(window)
window = '00000000'x
dummywindow = TR_OPENPROJECT(app,SleepWin)
return
_uniconify:
ok=tr_closeproject(dummywindow)
dummywindow = '00000000'x
prefs.iwinx=iwinsize.trd_left
prefs.iwiny=iwinsize.trd_top
prefs.iwinw=iwinsize.trd_width
prefs.iwinh=iwinsize.trd_height
prefs.iwinx2=iwinsize.trd_left2
prefs.iwiny2=iwinsize.trd_top2
prefs.iwinw2=iwinsize.trd_width2
prefs.iwinh2=iwinsize.trd_height2
prefs.iwinz=iwinsize.trd_zoomed
window = TR_OPENPROJECT(app,windowtags)
WindowProject=C2D(window) /* zum Locken des Fensters bei About */
CALL _UpdateToolListe
return
/*******************************************************************************
** Load and interpret arexx script
*******************************************************************************/
loadrexx:
PARSE ARG dir,file,store
IF dir ~= '' THEN DO
IF RIGHT(dir,1) = ':' THEN
file = dir||file
ELSE
file = dir||'/'||file
END
IF ~OPEN('rexxfile',file,'R') THEN
RETURN(FALSE)
rexxtext = READCH('rexxfile',64000)
INTERPRET rexxtext
CALL CLOSE('rexxfile')
IF store ~= '' THEN
INTERPRET store '= rexxtext'
DROP rexxtext
RETURN(TRUE)
/*******************************************************************************
** Text aus dem Catalog-File auslesen, falls vorhanden
*******************************************************************************/
localestring:
PARSE ARG stringnumber
IF catalog ~= 0 THEN
RETURN(GETCATALOGSTR(catalog,stringnumber,strings.stringnumber))
ELSE
RETURN(strings.stringnumber)
_InitAll:
NL = '0a'x
TRUE = 1
FALSE = 0
catalog = 0
/*
** Open libs
*/
IF ~SHOW('LIBRARIES','tritonrexx.library') THEN
IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN
quit('Cannot open tritonrexx.library!',10)
IF ~SHOW(LIBRARIES,'rexxtricks.library') THEN
IF ~ADDLIB('rexxtricks.library',9,-30,38) THEN
quit('Cannot open rexxtricks.library!',10)
IF ~SHOW('LIBRARIES','rexxsupport.library') THEN
IF ~ADDLIB('rexxsupport.library',9,-30,0) THEN
quit('Cannot open rexxsupport.library!',10)
IF ~SHOW('LIBRARIES','rexxreqtools.library') THEN
IF ~ADDLIB('rexxreqtools.library',9,-30,0) THEN
quit('Cannot open rexxreqtools.library!',10)
/*
** Set current dir
*/
PARSE SOURCE . . . script .
progdir = PATHPART(script)
booll = LENGTH(progdir)
booli= LASTPOS(":",progdir)
boolh= LASTPOS("/",progdir)
IF booli <= booll THEN progdir2=progdir||"/"
IF boolh == 0 THEN progdir2=progdir||"/"
CALL PRAGMA('D',progdir)
/*
** Read default strings, open locale.library and catalog
*/
IF ~loadrexx(progdir,'ExchangeGUI.strings','') THEN
quit('Error reading file "ExchangeGUI.strings"!'),10)
IF ~SHOW('LIBRARIES','locale.library') THEN
CALL ADDLIB('locale.library',0,-30,0)
IF SHOW('LIBRARIES','locale.library') THEN DO
language = GETENV('language')
IF language ~= '' THEN
catalog = OPENCATALOG(MAKEPATH(progdir,'catalogs/' || language || '/ExchangeGUI.catalog'),'english',0)
IF catalog = 0 THEN
catalog = OPENCATALOG('ExchangeGUI.catalog','english',0)
END
/* Gibt es einen Parameter für den Bildschirm. Wenn nicht, dann wird
der Screen auf dem defaultPubScreen geöffnet. */
IF PubScreen == "" THEN
PubScreen = RXTR_GETDEFAULTPUBSCREEN()
RETURN
/*******************************************************************************
** Routine, die bei einer Unterbrechung des Scripts aufgerufen wird
*******************************************************************************/
break_c:
failure:
halt:
ioerr:
syntax:
SAY '+++ Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)
SAY SOURCELINE(sigl)
IF app ~= '00000000'x THEN
CALL TR_DELETEAPP(app)
EXIT(10)
/*EOS*/